#pragma once
#include<iostream>
using namespace std;
class Date {
public:
	friend ostream& operator<<(const ostream& out, const Date& d);
	// 获取某年某月的天数
	int GetMonthDay();
	// 全缺省的构造函数
    //注：只能在头文件给形参赋值，.cpp文件中不可以（祖师爷规定的）
	Date(int year = 1, int month = 1, int day = 1);
	// 拷贝构造函数
	Date(const Date& d);
	//赋值运算符重载
	Date& operator=(const Date& d);
	//打印输出
	void Print();
	//析构函数
	/*~Date();*/
	// 日期+=天数
	Date& operator+=(int ds);
	// 日期+天数
	Date operator+(int ds);
	// 日期-天数
	Date operator-(int ds);
	// 日期-=天数
	Date& operator-=(int ds);
	// 前置++
	Date& operator++();
	// 后置++
	Date operator++(int);
	// 后置--
	Date operator--(int);
	// 前置--
	Date& operator--();
	// >运算符重载
	bool operator>(const Date& d);
	// ==运算符重载
	bool operator==(const Date& d);
	// >=运算符重载
	bool operator >= (const Date& d);
	// <运算符重载
	bool operator<(const Date& d);
	// <=运算符重载
	bool operator <= (const Date& d);
	// !=运算符重载
	bool operator != (const Date& d);
	// 日期-日期 返回天数
	int operator-(const Date& d);
private:
	int _year;
	int _month;
	int _day;
};
//   <<流插入重载  要在类外面
ostream& operator<<(const ostream& out,const Date& d);